// Keywords: continuous space, continuous spatial landscape, boundaries, boundary conditions, dispersal kernel

initialize() {
	initializeSLiMOptions(dimensionality="xy");
	initializeMutationRate(1e-7);
	initializeMutationType("m1", 0.5, "f", 0.0);
	initializeGenomicElementType("g1", m1, 1.0);
	initializeGenomicElement(g1, 0, 99999);
	initializeRecombinationRate(1e-8);
	
	initializeInteractionType(1, "xy", reciprocal=T, maxDistance=0.3);  // competition
	i1.setInteractionFunction("n", 3.0, 0.1);
}
1 late() {
	sim.addSubpop("p1", 500);
	
	// Initial positions are random within spatialBounds
	p1.individuals.setSpatialPosition(p1.pointUniform(500));
}
1: late() {
	// Dispersal and boundary enforcement
	p1.deviatePositions(NULL, "reprising", INF, "n", 0.02);
	
	// Evaluate for competition
	i1.evaluate(p1);
}
fitnessEffect() {
	totalStrength = i1.totalOfNeighborStrengths(individual);
	return 1.1 - totalStrength / p1.individualCount;
}
2000 late() { sim.outputFixedMutations(); }
